package cn.stylefeng.guns.modular.business.frequency.ordersub.model.param;

import cn.stylefeng.guns.core.pojo.base.param.BaseParam;

import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * 子订单
 *
 * @author yujie
 * @date 2023/05/09 17:16
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class OrderSubParam extends BaseParam {

    /**
     * 子订单id
     */
    @NotNull(message = "子订单id不能为空",groups = {edit.class})
    private Long id;

    /**
     * 子订单号
     */
    @NotNull(message = "子订单号不能为空",groups = {add.class,edit.class})
    private String orderSubNo;

    /**
     * 关联订单ID
     */
    @NotNull(message = "关联订单ID不能为空",groups = {add.class,edit.class})
    private Long orderId;

    /**
     * 订单状态
     */
    @NotNull(message = "订单状态不能为空",groups = {add.class,edit.class})
    private Integer status;

    /**
     * 车辆名称
     */
    @NotNull(message = "车辆名称不能为空",groups = {add.class,edit.class})
    private String carName;

    /**
     * 车架号
     */
    @NotNull(message = "车架号不能为空",groups = {add.class,edit.class})
    private String vin;

    /**
     * 车价值
     */
    @NotNull(message = "车价值不能为空",groups = {add.class,edit.class})
    private BigDecimal carCost;

    /**
     * 保险费
     */
    @NotNull(message = "保险费不能为空",groups = {add.class,edit.class})
    private BigDecimal insuranceFee;

    /**
     * 付款方式
     */
    @NotNull(message = "付款方式不能为空",groups = {add.class,edit.class})
    private String paymentType;

    /**
     * 现付金额
     */
    @NotNull(message = "现付金额不能为空",groups = {add.class,edit.class})
    private BigDecimal spotPayFee;

    /**
     * 到付金额
     */
    @NotNull(message = "到付金额不能为空",groups = {add.class,edit.class})
    private BigDecimal deliveryPayFee;

    /**
     * 欠付金额
     */
    @NotNull(message = "欠付金额不能为空",groups = {add.class,edit.class})
    private BigDecimal backPayFee;

    /**
     * 月结金额
     */
    @NotNull(message = "月结金额不能为空",groups = {add.class,edit.class})
    private  BigDecimal slotPayFee;

    /**
     * 创建人
     */
    private String createUser;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * update_time
     */
    private Date updateTime;

    /**
     * 返款费
     */
    @NotNull(message = "返款费不能为空",groups = {add.class,edit.class})
    private BigDecimal kickbackFee;

    /**
     * 起始地操作类型 1.业务 2.网点
     */
    @NotNull(message = "起始地操作类型 1.业务 2.网点不能为空",groups = {add.class,edit.class})
    private Integer startOperateType;

    /**
     * 是否产生费用 1.是 0.否
     */
    @NotNull(message = "是否产生费用 1.是 0.否不能为空",groups = {add.class,edit.class})
    private Integer hasCost;

    /**
     * 到达地code
     */
    @NotNull(message = "到达地code不能为空",groups = {add.class,edit.class})
    private String arriveCode;

    /**
     * 到付线上是否已付 1.是 0.否
     */
    @NotNull(message = "到付线上是否已付 1.是 0.否不能为空",groups = {add.class,edit.class})
    private Integer deliveryHasPay;

    /**
     * 委托联系人ID
     */
    @NotNull(message = "委托联系人ID不能为空",groups = {add.class,edit.class})
    private Long linkmanId;

    /**
     * 委托方
     */
    @NotNull(message = "委托方不能为空",groups = {add.class,edit.class})
    private String companyName;

    /**
     * 委托方联系人
     */
    @NotNull(message = "委托方联系人不能为空",groups = {add.class,edit.class})
    private String linkmanName;

    /**
     * 委托方联系电话
     */
    @NotNull(message = "委托方联系电话不能为空",groups = {add.class,edit.class})
    private String linkmanPhone;

    /**
     * 委托方联系电话
     */
    @NotNull(message = "委托方联系电话不能为空",groups = {add.class,edit.class})
    private String consigneeName;

    /**
     * 委托方联系电话
     */
    @NotNull(message = "委托方联系电话不能为空",groups = {add.class,edit.class})
    private String consigneePhone;

    /**
     * 出发地code
     */
    @NotNull(message = "出发地code不能为空",groups = {add.class,edit.class})
    private String startCode;

    /**
     * 目的地code
     */
    @NotNull(message = "目的地code不能为空",groups = {add.class,edit.class})
    private String destinationCode;

    /**
     * 提车方式
     */
    @NotNull(message = "提车方式不能为空",groups = {add.class,edit.class})
    private Integer pickType;

    /**
     * 送车方式
     */
    @NotNull(message = "送车方式不能为空",groups = {add.class,edit.class})
    private Integer takeType;

    /**
     * 提车费
     */
    @NotNull(message = "提车费不能为空",groups = {add.class,edit.class})
    private BigDecimal pickFee;

    /**
     * 送车费
     */
    @NotNull(message = "送车费不能为空",groups = {add.class,edit.class})
    private BigDecimal takeFee;

    /**
     * 提车联系人
     */
    @NotNull(message = "提车联系人不能为空",groups = {add.class,edit.class})
    private String pickLinkmanName;

    /**
     * 提车联系电话
     */
    @NotNull(message = "提车联系电话不能为空",groups = {add.class,edit.class})
    private String pickLinkmanPhone;

    /**
     * 送车联系人
     */
    @NotNull(message = "送车联系人不能为空",groups = {add.class,edit.class})
    private String takeLinkmanName;

    /**
     * 送车联系电话
     */
    @NotNull(message = "送车联系电话不能为空",groups = {add.class,edit.class})
    private String takeLinkmanPhone;

    /**
     * 提车区code
     */
    @NotNull(message = "提车区code不能为空",groups = {add.class,edit.class})
    private String pickAreaCode;

    /**
     * 送车区code
     */
    @NotNull(message = "送车区code不能为空",groups = {add.class,edit.class})
    private String takeAreaCode;

    /**
     * 提车地址
     */
    @NotNull(message = "提车地址不能为空",groups = {add.class,edit.class})
    private String pickAddress;

    /**
     * 送车地址
     */
    @NotNull(message = "送车地址不能为空",groups = {add.class,edit.class})
    private String takeAddress;

    /**
     * 运输费
     */
    @NotNull(message = "运输费不能为空",groups = {add.class,edit.class})
    private BigDecimal transportFee;

    /**
     * 税额
     */
    @NotNull(message = "税额不能为空",groups = {add.class,edit.class})
    private BigDecimal invoiceFee;

    /**
     * 总费用
     */
    @NotNull(message = "总费用不能为空",groups = {add.class,edit.class})
    private BigDecimal totalFee;

    /**
     * 是否加急 1.是 2.否
     */
    @NotNull(message = "是否加急 1.是 2.否不能为空",groups = {add.class,edit.class})
    private Integer hasUrgent;

    /**
     * 预约提车时间
     */
    @NotNull(message = "预约提车时间不能为空",groups = {add.class,edit.class})
    private Date appointPickTime;

    /**
     * 备注信息
     */
    @NotNull(message = "备注信息不能为空",groups = {add.class,edit.class})
    private String remark;

    /**
     * 更新版本
     */
    @NotNull(message = "更新版本不能为空",groups = {add.class,edit.class})
    private String updateVersion;

    /**
     * 是否有保险
     */
    @NotNull(message = "是否有保险不能为空",groups = {add.class,edit.class})
    private Integer hasInsurance;

    /**
     * 运输方式 1.公路运输 2.铁路运输
     */
    @NotNull(message = "运输方式 1.公路运输 2.铁路运输不能为空",groups = {add.class,edit.class})
    private Integer transportType;

    /**
     * update_user
     */
    private Long updateUser;

    /**
     * 租户id
     */
    @NotNull(message = "租户id不能为空",groups = {add.class,edit.class})
    private Long tenantId;

}
